package com.zy.je.common.mybatis.ext.service;

import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zy.je.common.mybatis.ext.model.base.BaseEntity;

import java.io.Serializable;
import java.util.List;

/**
 * @author zy
 */
public interface BizService<T extends BaseEntity> extends IService<T> {
    /**
     * 根据条件查询数据量
     *
     * @param entity
     * @return
     */
    Long bizCount(T entity);

    /**
     * 根据ID查询数据
     *
     * @param id
     * @return
     */
    T bizGet(Serializable id);

    /**
     * 根据条件分页查询数据
     *
     * @param entity
     * @return
     */
    IPage<T> bizPageList(T entity);

    /**
     * 创建数据
     *
     * @param entity
     * @return
     */
    String bizCreate(T entity);

    /**
     * 更新数据
     *
     * @param entity
     * @return
     */
    String bizUpdate(T entity);

    /**
     * 保存数据（创建或更新）
     *
     * @param entity
     * @return
     */
    String bizSave(T entity);

    /**
     * 保存数据（创建或更新）
     *
     * @param entity
     * @param updateWrapper 用于指定要更新为null的字段
     * @return
     */
    String bizSave(T entity, LambdaUpdateWrapper<T> updateWrapper);

    /**
     * 根据id删除数据
     *
     * @param id
     * @return
     */
    String bizDelete(Serializable id);

    /**
     * 根据id拼串批量查询数据
     *
     * @param id
     * @return
     */
    List<T> bizBatchGet(String id);

    /**
     * 批量保存数据（创建或更新）
     *
     * @param dataList
     * @return
     */
    List<String> bizBatchSave(List<T> dataList);

    /**
     * 根据id拼串批量删除数据
     *
     * @param id
     * @return
     */
    List<String> bizBatchDelete(String id);

}
